]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
dbusServices/screencast: Add recordings to recent items
authorFlorian Müllner <fmuellner@gnome.org>
Mon, 14 Sep 2020 17:55:17 +0000 (19:55 +0200)
committerFlorian Müllner <florian.muellner@gmail.com>
Mon, 14 Sep 2020 21:15:13 +0000 (21:15 +0000)
This is useful functionality that got lost when replacing the built-in
recorder with an external screencast service; bring it back.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3171

js/dbusServices/screencast/screencastService.js

index dc38b44a13053ecc45781d1a9d273ed983f77404..e98089663effaf0af6b0dc235fde3a36a4f1d3b1 100644 (file)
@@ -1,7 +1,9 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 /* exported ScreencastService */
 
-const { Gio, GLib, Gst } = imports.gi;
+imports.gi.versions.Gtk = '3.0';
+
+const { Gio, GLib, Gst, Gtk } = imports.gi;
 
 const { loadInterfaceXML, loadSubInterfaceXML } = imports.misc.fileUtils;
 const { ServiceImplementation } = imports.dbusService;
@@ -78,6 +80,11 @@ var Recorder = class {
             this._drawCursor = options['draw-cursor'];
     }
 
+    _addRecentItem() {
+        const file = Gio.File.new_for_path(this._filePath);
+        Gtk.RecentManager.get_default().add_item(file.get_uri());
+    }
+
     _watchSender(sender) {
         this._nameWatchId = this._dbusConnection.watch_name(
             sender,
@@ -180,6 +187,7 @@ var Recorder = class {
         switch (message.type) {
         case Gst.MessageType.EOS:
             this._pipeline.set_state(Gst.State.NULL);
+            this._addRecentItem();
 
             switch (this._pipelineState) {
             case PipelineState.FLUSHING:
@@ -238,6 +246,7 @@ var ScreencastService = class extends ServiceImplementation {
         super(ScreencastIface, '/org/gnome/Shell/Screencast');
 
         Gst.init(null);
+        Gtk.init(null);
 
         this._recorders = new Map();
         this._senders = new Map();